from redis import StrictRedis
import logging


class Config(object):
    """项目配置信息"""
    DEBUG = True

    # mysql数据库的配置信息
    # 连接数据库
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/infomation"
    # 关闭数据库修改跟踪
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # 能替换 db.session.commit()
    # 当数据库会话对象结束的时候自动帮助提交更新数据到数据库
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True

    # redis数据库配置
    REDIS_HOST = "127.0.0.1"
    REDIS_PORT = 6379
    REDIS_NUM = 9

    # 加密字符串
    SECRET_KEY = "SDFSLKDFOASASD9F8S9AD8FH"
    # 通过flask_session拓展,将flask中的session从内存调整到redis
    # 存储数据库的类型: redis
    SESSION_TYPE = "redis"
    # 将session实例对象进行转入
    SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT, db=REDIS_NUM)
    # 对session数据进行加密处理
    SESSION_USE_SIGNER = True
    # 关闭永久存储
    SESSION_PERMANENT = False
    # 过期时长(24小时)
    PERMANENT_SESSION_LIFETIME = 86400


class DevelopmentConfig(Config):
    """开发者环境的项目配置信息"""
    pass
    # 开发模式的日志级别: DEBUG
    LOG_LEVEL = logging.DEBUG


class ProductionConfig(Config):
    """生产环境的项目配置"""
    DEBUG = False
    # 线上模式日志级别: WARNING
    LOG_LEVEL = logging.WARNING



# 给外界暴露一个使用配置类的接口
# 使用方法： config_dict['development'] --> DevelopmentConfig 开发环境的配置类
config_dict = {
    "development": DevelopmentConfig,
    "production": ProductionConfig
}
